package org.example.protocol;/**
 * @Description: TODO
 * @Author: sats@jz
 * @Date: 2025/1/3 19:28
 **/

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * @description TODO
 * @author sats@jz
 * @date 2025年01月03日 19:28
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage <T>{
    // 消息头
    private Header header;
    private T body;

    @Data
    public static class Header{
        // 魔数 保证安全
        private byte magic;

        // 版本号
        private byte version;

        // 序列化器
        private byte serializer;

        // 消息类型
        private byte messageType;


        // 状态
        private byte status;

        // 请求id
        private long requestId;

        // 消息长度
        private int bodyLength;
    }
}
